#include <cstdio>
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <fcntl.h>
#include <python2.7/Python.h>

using namespace std;

int main() {
	Py_Initialize();
	if (Py_IsInitialized() == 0) {
		puts("Py_Initlialize failed");
		return 0;
	}
	// 必须的，更改环境变量
	PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");


	/************************************************/
	// 有些时候我们需要在py文件里面写一些模块
	// 然后调用这些模块，另外我们经常需要传递参数给它们
	
	const char *module = "poj_py_parser";
	const char *func   = "get_status";
	const char *user_id = "gvj0";
	const char *stream;

	PyObject *parser = PyImport_ImportModule( module );
	if (!parser) {
		puts("PyImport_ImportModule failed");
		return 0;
	}
	// 调用这个函数，这个函数是需要参数的，也有返回值	
	PyObject *get_status = PyObject_GetAttrString(parser, func);
	if (!get_status) {
		puts("PyObject_GetAttrString 'get_status' failed");
		return 0;
	}
	// 设置参数
	PyObject *arg = Py_BuildValue("(s)", user_id);
	PyObject *result = PyEval_CallObject(get_status, arg);	
	// 解析返回值
	PyArg_Parse(result, "s", &stream);
	printf("%s\n", stream);
	/************************************************/


	Py_Finalize();
	return 0;
}
